let arr = [1, [2, [3, [4, 5]]], 6]
// 1、采用递归的方式
function flattenArr(arr) {
    let result = []
    const flat = function (arr) {
        arr.forEach(item => {
            if (Array.isArray(item)) {
                flat(item)
            } else {
                result.push(item)
            }
        })
    }
    flat(arr)
    return result
}
// 2、concat
function flattenByConcat(arr) {
    let res = []
    arr.forEach(item => {
        if (Array.isArray(item)) {
            res = res.concat(flattenByConcat(item))
        } else {
            res.push(item)
        }
    })
    return res
}
// 3、reduce
function flattenByReduce(arr) {
    return arr.reduce((preVal, currentVal) => preVal.concat(Array.isArray(currentVal) ? flattenByReduce(currentVal) : currentVal), [])
}

// 只展开一层的操作
function flattenArrOne(arr, level) {
    let ans = []
    const flat = function (arr, curLevel) {
        if(curLevel > level) return
        arr.forEach(item => {
            if (curLevel < level && Array.isArray(item)) {
                flat(item, curLevel + 1)
            } else {
                ans.push(item)
            }
        })
    }
    flat(arr, 0)
    return ans
}
// 还可以使用自带的flat方法
let a = [1, 2, 3, [4, 5, [6, 7]]]
console.log(a.flat(2));

console.log(flattenArrOne(arr, 3));